156 research outputs found
Research Software Science: Expanding the Impact of Research Software Engineering
Software plays a central role in scientific discovery. Improving how we develop and use software for research can have both broad and deep impacts on a spectrum of challenges and opportunities society faces today. The emergence of the research software engineer (RSE) role correlates with the growing complexity of scientific challenges and the diversity of software team skills. In this article, research software science (RSS), an idea related to RSE and particularly suited to research software teams, is described. RSS promotes the use of scientific methodologies to explore and establish broadly applicable knowledge. Using RSS, we can pursue sustainable, repeatable, and reproducible software improvements that positively impact research software toward improved scientific discovery
Scalable Delivery of Scalable Libraries and Tools: How ECP Delivered a Software Ecosystem for Exascale and Beyond
The Exascale Computing Project (ECP) was one of the largest open-source
scientific software development projects ever. It supported approximately 1,000
staff from US Department of Energy laboratories, and university and industry
partners. About 250 staff contributed to 70 scientific libraries and tools to
support applications on multiple exascale computing systems that were also
under development.
Funded as a construction project, ECP adopted an earned-value management
system, based on milestones. and a key performance parameter system based, in
part, on integrations. With accelerated delivery schedules and significant
project risk, we also emphasized software quality using community policies,
automated testing, and continuous integration. Software Development Kit teams
provided cross-team collaboration. Products were delivered via E4S, a curated
portfolio of libraries and tools.
In this paper, we discuss the organizational and management elements that
enabled the efficient and effective delivery of ECP libraries and tools,
lessons learned and next steps.Comment: 9 pages, 5 figures, submitted to IEEE Computing in Science and
Engineerin
Supporting 64-bit global indices in Epetra and other Trilinos packages -- Techniques used and lessons learned
The Trilinos Project is an effort to facilitate the design, development,
integration and ongoing support of mathematical software libraries within an
object-oriented framework. It is intended for large-scale, complex multiphysics
engineering and scientific applications. Epetra is one of its basic packages.
It provides serial and parallel linear algebra capabilities. Before Trilinos
version 11.0, released in 2012, Epetra used the C++ int data-type for storing
global and local indices for degrees of freedom (DOFs). Since int is typically
32-bit, this limited the largest problem size to be smaller than approximately
two billion DOFs. This was true even if a distributed memory machine could
handle larger problems. We have added optional support for C++ long long
data-type, which is at least 64-bit wide, for global indices. To save memory,
maintain the speed of memory-bound operations, and reduce further changes to
the code, the local indices are still 32-bit. We document the changes required
to achieve this feature and how the new functionality can be used. We also
report on the lessons learned in modifying a mature and popular package from
various perspectives -- design goals, backward compatibility, engineering
decisions, C++ language features, effects on existing users and other packages,
and build integration
Recommended from our members
Epetra developers coding guidelines.
Epetra is a package of classes for the construction and use of serial and distributed parallel linear algebra objects. It is one of the base packages in Trilinos. This document describes guidelines for Epetra coding style. The issues discussed here go beyond correct C++ syntax to address issues that make code more readable and self-consistent. The guidelines presented here are intended to aid current and future development of Epetra specifically. They reflect design decisions that were made in the early development stages of Epetra. Some of the guidelines are contrary to more commonly used conventions, but we choose to continue these practices for the purposes of self-consistency. These guidelines are intended to be complimentary to policies established in the Trilinos Developers Guide
Recommended from our members
Trilinos 3.1 tutorial.
This document introduces the use of Trilinos, version 3.1. Trilinos has been written to support, in a rigorous manner, the solver needs of the engineering and scientific applications at Sandia National Laboratories. Aim of this manuscript is to present the basic features of some of the Trilinos packages. The presented material includes the definition of distributed matrices and vectors with Epetra, the iterative solution of linear system with AztecOO, incomplete factorizations with IFPACK, multilevel methods with ML, direct solution of linear system with Amesos, and iterative solution of nonlinear systems with NOX. With the help of several examples, some of the most important classes and methods are detailed to the inexperienced user. For the most majority, each example is largely commented throughout the text. Other comments can be found in the source of each example. This document is a companion to the Trilinos User's Guide and Trilinos Development Guides. Also, the documentation included in each of the Trilinos' packages is of fundamental importance
- …